#! /bin/bash

# 获取环境变量
PLAY_HOME=/opt/playground

# 配置zeppelin-site.xml
function configureZeppelinSite()
{
 zpConfUrl=$1
 masterNode=$2
 
#  复制zeppelin-site.xml.template为zeppelin-site.xml配置文件
 cp $zpConfUrl.template $zpConfUrl
 
 # 配置节点信息为0.0.0.0
 host_conf="<value>0.0.0.0</value>"
 sed -i "s|<value>127.0.0.1</value>|$host_conf|g" $zpConfUrl

 # 配置端口信息为9090
 port_conf="<value>9090</value>"
 sed -i "s|<value>8080</value>|$port_conf|g" $zpConfUrl
}

# 安装Zeppelin
function installZeppelin()
{
 #1.在frames.txt中查看是否需要安装zeppelin
 zpInfo=`egrep "^zeppelin" $PLAY_HOME/frames.txt`

 zp=`echo $zpInfo | cut -d " " -f1`
 isInstall=`echo $zpInfo | cut -d " " -f2`
 zpNodes=`echo $zpInfo | cut -d " " -f3` 
 masterNode=`echo $zpInfo | cut -d " " -f4` 
 node=`hostname`

 #是否安装
 if [[ $isInstall = "true" && $zpNodes =~ $node ]];then
    
     #2.查看$PLAY_HOME/frames目录下是否有zeppelin安装包
     zpIsExists=`find $PLAY_HOME/frames -name $zp`

     if [[ ${#zpIsExists} -ne 0 ]];then

          if [[ ! -d /opt/app ]];then
              mkdir /opt/app && chmod -R 775 /opt/app
          fi

          #删除旧的
          zp_home_old=`find /opt/app -maxdepth 1 -name "zeppelin*"`
          for i in $zp_home_old;do
                rm -rf $i
          done

          #3.解压到指定文件夹/opt/app中
          echo "开始解压zeepelin安装包"
          tar -zxvf $zpIsExists -C /opt/app >& /dev/null
          echo "zeepelin安装包解压完毕"

          zp_home=`find /opt/app -maxdepth 1 -name "zeppelin*"`

          #4.配置zeppelin-site.xml文件
          configureZeppelinSite $zp_home/conf/zeppelin-site.xml $masterNode

          #7.配置ZEPPELIN_HOME
          profile=/etc/profile
          sed -i "/^export ZEPPELIN_HOME/d" $profile
          echo "export ZEPPELIN_HOME=$zp_home" >> $profile

          #8.配置PATH
          sed -i "/^export PATH=\$PATH:\$ZEPPELIN_HOME\/bin/d" $profile
          echo "export PATH=\$PATH:\$ZEPPELIN_HOME/bin" >> $profile

          #9.更新/etc/profile文件
          source /etc/profile && source /etc/profile
     else
         echo "$PLAY_HOME/frames目录下没有zeppelin安装包"
     fi
 else
     echo "Zeppelin不允许安装在当前节点，请检查配置文件！"
 fi

}

installZeppelin
